﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using Dominio;
using Repositorio;
using NHibernate;
using NHibernate.Linq;
using NHibernate.Criterion;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            //CriarBanco();

            IRepositorioCliente repositorioCliente = new RepositorioCliente();
            IEnumerable<Cliente> clientes;

            Expression<Func<Cliente, bool>> predicado = c => c.Bloqueado == SimNao.Sim && c.Id > 1 && c.Nome.IsLike("Fran",MatchMode.Anywhere);
            clientes = repositorioCliente.Listar(predicado);

            foreach (var c in clientes)
            {
                System.Console.WriteLine("{0} {1} {2}", c.Id, c.Nome, c.Email);
            }

        }

        private static void CriarBanco()
        {
            NHibernateHelper.CriarBanco();

            IRepositorioCliente repositorioCliente = new RepositorioCliente();

            Cliente cliente;

            cliente = new Cliente { Nome = "Rafael", Telefone = "54 3333 2744", Email = "rafael@gmail.com", Bloqueado = SimNao.Sim };
            repositorioCliente.Salvar(cliente);
            cliente = new Cliente { Nome = "Michele", Telefone = "54 3333 2744", Email = "michele@gmail.com", Bloqueado = SimNao.Nao };
            repositorioCliente.Salvar(cliente);
            cliente = new Cliente { Nome = "Franciele", Telefone = "54 3333 2744", Email = "franciele@gmail.com", Bloqueado = SimNao.Sim };
            repositorioCliente.Salvar(cliente);
            cliente = new Cliente { Nome = "Daniane", Telefone = "54 3333 2744", Email = "daniane@gmail.com", Bloqueado = SimNao.Sim };
            repositorioCliente.Salvar(cliente);
            cliente = new Cliente { Nome = "Marina", Telefone = "54 3333 2744", Email = "marina@gmail.com", Bloqueado = SimNao.Nao };
            repositorioCliente.Salvar(cliente);
        }
    }
}